home *** CD-ROM | disk | FTP | other *** search
- opt AMIGA
-
- ; version 1.04
-
- include exec/alerts.i
- include libraries/errormsg.i
- include libraries/errormsg_lib.i
- include utility/utility_lib.i
-
- Start lea DOS.Name(pc),a1
- move.l #37,d0
- move.l 4.w,a6
- jsr _LVOOpenLibrary(a6)
- move.l d0,DOS.Base
- bne.s DOSOpened
- move.l #AT_Recovery!AG_OpenLib!AO_DOSLib,d7
- jmp _LVOAlert(a6)
- DOSOpened
- lea ErrorMsg.Name(pc),a1
- moveq #1,d0
- jsr _LVOOpenLibrary(a6)
- move.l d0,ErrorMsg.Base
- bne.s ErrorMsgOpened
- move.l #NoErrorMsg.MSG,d1
- move.l DOS.Base(pc),a6
- jsr _LVOPutStr(a6)
- bra CloseDOS
-
- ErrorMsgOpened
- move.l DOS.Base(pc),a6
- move.l #Args.Template,d1
- move.l #Args.Array,d2
- moveq #0,d3
- jsr _LVOReadArgs(a6)
- move.l d0,Args.RDArgs
- bne.s ArgsRead
-
- jsr _LVOIoErr(a6)
- move.l #ERMSYS_DOS,d1
- move.l #ERMSUB_IoErr,d2
- lea ReadArgsFailed.MSG(pc),a0
- move.l ErrorMsg.Base(pc),a6
- jsr _LVOPutErrorMsg(a6)
- bra CloseErrorMsg
-
- ArgsRead
- lea SystemTranslation.Array(pc),a1
- move.l Args.Array(pc),a0
- bsr TranslateWord
- cmp.l #-1,d0
- bne.s SystemOK
- move.l #UnknownSystem.MSG,d1
- move.l DOS.Base(pc),a6
- jsr _LVOPutStr(a6)
- lea SystemTranslation.Array(pc),a2
- bsr PrintList
- move.l #SubAvailable.MSG,d1
- jsr _LVOPutStr(a6)
- lea SubSystemTranslation.Array(pc),a2
- bsr PrintList
- bra.s ErrorWritten
-
- SystemOK
- move.l d0,d3
- lea SubSystemTranslation.Array(pc),a1
- move.l Args.Array+8(pc),d0
- beq.s SubOK
- move.l d0,a0
- bsr.s TranslateWord
- cmp.l #-1,d0
- bne.s SubOK
- moveq #ERMSUB_Generic,d0
-
- SubOK move.l d0,d2
- move.l d3,d1
- move.l Args.Array+4(pc),a0
- move.l (a0),d0
- suba.l a0,a0
- move.l ErrorMsg.Base(pc),a6
- jsr _LVOPutErrorMsg(a6)
- tst.l d0
- bne.s ErrorWritten
- move.l #UnavailableCode.MSG,d1
- move.l DOS.Base(pc),a6
- jsr _LVOPutStr(a6)
-
- ErrorWritten
- move.l Args.RDArgs(pc),d1
- move.l DOS.Base(pc),a6
- jsr _LVOFreeArgs(a6)
- CloseErrorMsg
- move.l ErrorMsg.Base(pc),a1
- move.l 4.w,a6
- jsr _LVOCloseLibrary(a6)
- CloseDOS
- move.l DOS.Base(pc),a1
- move.l 4.w,a6
- jmp _LVOCloseLibrary(a6)
-
- TranslateWord ; Result=TranslateWord(String,CompArray)(A0,A1)
- move.l ErrorMsg.Base(pc),a6
- move.l emb_UtilityBase(a6),a6
- move.l a0,a2
- move.l a1,a3
- .Loop move.l (a3)+,d0
- move.l (a3)+,d2
- cmp.l #-1,d0
- beq.s .NotFound
- add.l #KW,d0
- move.l d0,a1 ; string1=Known one (stored in increasing order)
- move.l a2,a0 ; string2=Unknown one (argument)
- jsr _LVOStricmp(a6)
- tst.l d0
- bgt.s .Loop
- bne.s .NotFound
- move.l d2,d0
- rts
- .NotFound
- moveq #-1,d0
- rts
-
- PrintList ; PrintList(List)(A2)
- move.l DOS.Base(pc),a6
- .Loop cmp.l #-1,(a2)
- beq.s .Finished
- move.l (a2),d1
- add.l #KW,d1
- jsr _LVOPutStr(a6)
- move.l #LF,d1
- jsr _LVOPutStr(a6)
- addq.l #8,a2
- bra.s .Loop
- .Finished
- rts
-
- SystemTranslation.Array
- dc.l AMIGAGUIDE-KW,ERMSYS_AMIGAGUIDE ; sorted list
- dc.l ARP-KW,ERMSYS_ARP
- dc.l AUDIO-KW,ERMSYS_AUDIO
- dc.l CLIPBOARD-KW,ERMSYS_CLIPBOARD
- dc.l COMMODITIES-KW,ERMSYS_COMMODITIES
- dc.l CONSOLE-KW,ERMSYS_CONSOLE
- dc.l DATATYPES-KW,ERMSYS_DATATYPES
- dc.l DISKFONT-KW,ERMSYS_DISKFONT
- dc.l DOS-KW,ERMSYS_DOS
- dc.l ERRORMSG-KW,ERMSYS_ERRORMSG
- dc.l EXEC-KW,ERMSYS_EXEC
- dc.l EXPANSION-KW,ERMSYS_EXPANSION
- dc.l GADTOOLS-KW,ERMSYS_GADTOOLS
- dc.l GAMEPORT-KW,ERMSYS_GAMEPORT
- dc.l GRAPHICS-KW,ERMSYS_GRAPHICS
- dc.l IFFPARSE-KW,ERMSYS_IFFPARSE
- dc.l INPUT-KW,ERMSYS_INPUT
- dc.l INTUITION-KW,ERMSYS_INTUITION
- dc.l KEYBOARD-KW,ERMSYS_KEYBOARD
- dc.l MUI-KW,ERMSYS_MUI
- dc.l NARRATOR-KW,ERMSYS_NARRATOR
- dc.l PARALLEL-KW,ERMSYS_PARALLEL
- dc.l POWERPACKER-KW,ERMSYS_POWERPACKER
- dc.l PRINTER-KW,ERMSYS_PRINTER
- dc.l SCSIDISK-KW,ERMSYS_SCSIDISK
- dc.l SERIAL-KW,ERMSYS_SERIAL
- dc.l TIMER-KW,ERMSYS_TIMER
- dc.l TRACKDISK-KW,ERMSYS_TRACKDISK
- dc.l TRANSLATOR-KW,ERMSYS_TRANSLATOR
- dc.l XFD-KW,ERMSYS_XFD
- dc.l GADTOOLSBOX-KW,ERMSYS_GADTOOLSBOX
- dc.l GUIFRONT-KW,ERMSYS_GUIFRONT
- dc.l XPK-KW,ERMSYS_XPK
- dc.l -1
-
- SubSystemTranslation.Array
- dc.l CXBROKER-KW,ERMSUB_CxBroker
- dc.l CXOBJERROR-KW,ERMSUB_CxObjError
- dc.l FAULT-KW,ERMSUB_Fault
- dc.l IOERR-KW,ERMSUB_IoErr
- dc.l MAKEVPORT-KW,ERMSUB_MakeVPort
- dc.l MATCHFIRST-KW,ERMSUB_MatchFirst
- dc.l MATCHNEXT-KW,ERMSUB_MatchNext
- dc.l MRGCOP-KW,ERMSUB_MrgCop
- dc.l MUIAUTOERROR-KW,ERMSUB_MUIAutoError
- dc.l NOLIBRARY-KW,ERMSUB_NoLibrary ; new for V1.02
- dc.l NOMEMORY-KW,ERMSUB_NoMemory
- dc.l OPENSCREEN-KW,ERMSUB_OpenScreen
- dc.l OPENSCREENTAGLIST-KW,ERMSUB_OpenScreenTagList
- dc.l LOADGUI-KW,ERMSUB_LoadGUI
- dc.l SETUPSCREEN-KW,ERMSUB_SetupScreen
- dc.l OPENAWINDOW-KW,ERMSUB_OpenAWindow
- dc.l CREATEGUIA-KW,ERMSUB_CreateGUIA
- dc.l -1
-
- DOS.Base dc.l 0
- ErrorMsg.Base dc.l 0
-
- Args.RDArgs dc.l 0
- Args.Array dc.l 0,0,0
-
- DOS.Name dc.b 'dos.library',0
- ErrorMsg.Name dc.b 'errormsg.library',0
-
- NoErrorMsg.MSG dc.b 'You need errormsg.library V1.0+ in your LIBS: directory.',10,0
- ReadArgsFailed.MSG dc.b 'ReadArgs() failed',0
- UnknownSystem.MSG dc.b 'Unknown system, currently available are:',10,0
- SubAvailable.MSG dc.b 10,'Known Subsytems (any other for ERMSUB_Generic):',10,0
- UnavailableCode.MSG dc.b 'Unavailable code !'
- LF dc.b 10,0
-
- Args.Template dc.b 'SYSTEM/A,CODE/N/A,SUBSYSTEM',0
-
- KW ; base of keywords (relative displacements avoid too big Reloc tables)
-
- ; ******************** System identificators ***********************
- DOS dc.b 'dos',0
- EXEC dc.b 'exec',0
- GRAPHICS dc.b 'graphics',0
- INTUITION dc.b 'intuition',0
- IFFPARSE dc.b 'iffparse',0
- AUDIO dc.b 'audio',0
- GAMEPORT dc.b 'gameport',0
- NARRATOR dc.b 'narrator',0
- PARALLEL dc.b 'parallel',0
- PRINTER dc.b 'printer',0
- SCSIDISK dc.b 'scsidisk',0
- SERIAL dc.b 'serial',0
- TRACKDISK dc.b 'trackdisk',0
- CLIPBOARD dc.b 'clipboard',0
- CONSOLE dc.b 'console',0
- INPUT dc.b 'input',0
- KEYBOARD dc.b 'keyboard',0
- TIMER dc.b 'timer',0
- AMIGAGUIDE dc.b 'amigaguide',0
- ARP dc.b 'arp',0
- COMMODITIES dc.b 'commodities',0
- ERRORMSG dc.b 'errormsg',0
- EXPANSION dc.b 'expansion',0
- GADTOOLS dc.b 'gadtools',0
- POWERPACKER dc.b 'powerpacker',0
- TRANSLATOR dc.b 'translator',0
- DATATYPES dc.b 'datatypes',0
- DISKFONT dc.b 'diskfont',0
- MUI dc.b 'muimaster',0
- XFD dc.b 'xfdmaster'
- GADTOOLSBOX dc.b 'gadtoolsbox',0
- GUIFRONT dc.b 'guifront',0
- XPK dc.b 'xpk',0
-
- ; ********************* Subsystem identificators *******************
- IOERR dc.b 'ioerr',0
- MATCHFIRST dc.b 'matchfirst',0
- MATCHNEXT dc.b 'matchnext',0
- FAULT dc.b 'fault',0
- NOLIBRARY dc.b 'nolibrary',0
- NOMEMORY dc.b 'nomemory',0
- MAKEVPORT dc.b 'makevport',0
- MRGCOP dc.b 'mrgcop',0
- OPENSCREEN dc.b 'openscreen',0
- OPENSCREENTAGLIST dc.b 'openscreentaglist',0
- CXBROKER dc.b 'cxbroker',0
- CXOBJERROR dc.b 'cxobjerror',0
- MUIAUTOERROR dc.b 'muiautoerror',0
- LOADGUI dc.b 'loadgui',0
- SETUPSCREEN dc.b 'setupscreen',0
- OPENAWINDOW dc.b 'openawindow',0
- CREATEGUIA dc.b 'createguia',0
-